home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 1999 May / maximum-cd-1999-05.iso / Canvas 6 / DATA1.CAB / English_Tutorial_Files / Viewpage / ColImg.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-04  |  3.6 KB  |  164 lines

  1. import java.awt.Color;
  2. import java.awt.Graphics;
  3. import java.awt.Image;
  4. import java.awt.Rectangle;
  5. import java.awt.image.IndexColorModel;
  6. import java.awt.image.MemoryImageSource;
  7. import java.io.DataInputStream;
  8. import java.io.IOException;
  9. import java.net.URL;
  10.  
  11. final class ColImg extends ColObj {
  12.    private float m_imgLft;
  13.    private float m_imgTop;
  14.    private Image m_colImg;
  15.    private short m_imgWidth;
  16.    private short m_imgHeight;
  17.    private boolean m_imgFnd;
  18.    private ColGrph m_colGraphicObj;
  19.    public int m_imgType;
  20.    public byte useOffScreen;
  21.    public Rectangle m_bounds = new Rectangle();
  22.  
  23.    public void draw(Graphics var1) {
  24.       if (!this.m_imgFnd) {
  25.          int var9 = (int)((this.m_imgLft - this.m_colGraphicObj.m_xOrg) * this.m_colGraphicObj.m_mag);
  26.          int var10 = (int)((this.m_imgTop - this.m_colGraphicObj.m_yOrg) * this.m_colGraphicObj.m_mag);
  27.          int var12 = (int)((float)this.m_imgWidth * this.m_colGraphicObj.m_mag);
  28.          int var13 = (int)((float)this.m_imgHeight * this.m_colGraphicObj.m_mag);
  29.          var1.setColor(Color.gray);
  30.          var1.fillRect(var9, var10, var12, var13);
  31.          var1.setColor(Color.black);
  32.          var1.drawRect(var9, var10, var12, var13);
  33.          var1.drawLine(var9, var10, var12 + var9, var13 + var10);
  34.          var1.drawLine(var9 + var12, var10, var9, var10 + var13);
  35.       } else {
  36.          int var2 = (int)((float)this.m_imgWidth * this.m_colGraphicObj.m_mag);
  37.          int var3 = (int)((float)this.m_imgHeight * this.m_colGraphicObj.m_mag);
  38.          this.m_colGraphicObj.m_appComp.prepareImage(this.m_colImg, var2, var3, this.m_colGraphicObj.m_appComp);
  39.          if (this.useOffScreen == 1) {
  40.             Image var5 = this.m_colGraphicObj.m_appComp.createImage(var2, var3);
  41.             Object var6 = null;
  42.             Graphics var14 = var5.getGraphics();
  43.  
  44.             while(true) {
  45.                int var11 = this.m_colGraphicObj.m_appComp.checkImage(this.m_colImg, var2, var3, this.m_colGraphicObj.m_appComp);
  46.                if ((var11 & 32) != 0) {
  47.                   var14.drawImage(this.m_colImg, 0, 0, var2, var3, this.m_colGraphicObj.m_appComp);
  48.                   var14.dispose();
  49.                   var1.drawImage(var5, (int)((this.m_imgLft - this.m_colGraphicObj.m_xOrg) * this.m_colGraphicObj.m_mag), (int)((this.m_imgTop - this.m_colGraphicObj.m_yOrg) * this.m_colGraphicObj.m_mag), var2, var3, this.m_colGraphicObj.m_appComp);
  50.                   return;
  51.                }
  52.  
  53.                try {
  54.                   Thread.sleep(10L);
  55.                } catch (InterruptedException var7) {
  56.                }
  57.             }
  58.          } else {
  59.             while(true) {
  60.                int var4 = this.m_colGraphicObj.m_appComp.checkImage(this.m_colImg, var2, var3, this.m_colGraphicObj.m_appComp);
  61.                if ((var4 & 32) != 0) {
  62.                   var1.drawImage(this.m_colImg, (int)((this.m_imgLft - this.m_colGraphicObj.m_xOrg) * this.m_colGraphicObj.m_mag), (int)((this.m_imgTop - this.m_colGraphicObj.m_yOrg) * this.m_colGraphicObj.m_mag), var2, var3, this.m_colGraphicObj.m_appComp);
  63.                   return;
  64.                }
  65.  
  66.                try {
  67.                   Thread.sleep(10L);
  68.                } catch (InterruptedException var8) {
  69.                }
  70.             }
  71.          }
  72.       }
  73.    }
  74.  
  75.    public ColImg(DataInputStream var1, ColGrph var2, Graphics var3) throws IOException {
  76.       this.m_colGraphicObj = var2;
  77.       this.m_imgType = var1.readUnsignedByte();
  78.       this.m_imgLft = (float)var1.readShort() + (float)var1.readShort() / 65536.0F;
  79.       this.m_imgTop = (float)var1.readShort() + (float)var1.readShort() / 65536.0F;
  80.       this.m_imgWidth = var1.readShort();
  81.       this.m_imgHeight = var1.readShort();
  82.       int var5 = var1.readInt();
  83.       boolean var6 = true;
  84.       if (this.m_imgType != 1) {
  85.          String var7 = new String();
  86.  
  87.          for(int var4 = 0; var4 < var5; ++var4) {
  88.             var7 = var7 + (char)var1.readByte();
  89.          }
  90.  
  91.          if (this.m_imgHeight >= 1 && this.m_imgWidth >= 1) {
  92.             this.m_colImg = this.m_colGraphicObj.m_appComp.getImage(new URL(this.m_colGraphicObj.m_appComp.m_cvFilePath + var7));
  93.          } else {
  94.             var6 = false;
  95.          }
  96.       } else {
  97.          byte[] var20 = new byte[var5];
  98.          int var8 = 0;
  99.          int var9 = 0;
  100.          byte[] var13 = new byte[2];
  101.          IndexColorModel var14 = new IndexColorModel(1, 2, var13, var13, var13);
  102.          int var10 = this.m_imgHeight * ((this.m_imgWidth + 7) / 8);
  103.          byte[] var15 = new byte[var10];
  104.          var1.read(var15);
  105.  
  106.          for(int var16 = this.m_imgHeight; var16 > 0; --var16) {
  107.             char var11 = (char)var15[var8];
  108.             char var12 = 128;
  109.  
  110.             for(int var17 = this.m_imgWidth; var17 > 0; --var17) {
  111.                int var19 = var11 & var12;
  112.                if (var19 == 0) {
  113.                   var20[var9++] = 0;
  114.                } else {
  115.                   var20[var9++] = -1;
  116.                }
  117.  
  118.                var12 = (char)(var12 >> 1);
  119.                if (var12 == 0) {
  120.                   ++var8;
  121.                   if (var17 != 1) {
  122.                      var11 = (char)var15[var8];
  123.                   }
  124.  
  125.                   var12 = 128;
  126.                }
  127.             }
  128.  
  129.             if (var12 != 128) {
  130.                ++var8;
  131.             }
  132.          }
  133.  
  134.          var13[0] = -1;
  135.          this.m_colImg = this.m_colGraphicObj.m_appComp.createImage(new MemoryImageSource(this.m_imgWidth, this.m_imgHeight, var14, var20, 0, this.m_imgWidth));
  136.       }
  137.  
  138.       this.m_bounds.x = (int)this.m_imgLft;
  139.       this.m_bounds.y = (int)this.m_imgTop;
  140.       this.m_bounds.width = this.m_imgWidth;
  141.       this.m_bounds.height = this.m_imgHeight;
  142.       if (var6) {
  143.          try {
  144.             this.m_colGraphicObj.m_tracker.addImage(this.m_colImg, 0);
  145.             this.m_colGraphicObj.m_tracker.waitForID(0);
  146.          } catch (InterruptedException var18) {
  147.          }
  148.  
  149.          if (!this.m_colGraphicObj.m_tracker.isErrorID(0)) {
  150.             this.m_imgFnd = true;
  151.          }
  152.       }
  153.  
  154.    }
  155.  
  156.    public int getType() {
  157.       return 6;
  158.    }
  159.  
  160.    public Rectangle getBounds() {
  161.       return this.m_bounds;
  162.    }
  163. }
  164.